//------------------------------------------------------------------------------
//SFWK Framework
//Copyright (C) 2011 SQLI

//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.
//------------------------------------------------------------------------------

using System;

namespace SFWK.DAO
{
    /// <summary>
    /// Specific DAO Error
    /// </summary>
    public class DAOException : ApplicationException
    {
        #region Enum
        /// <summary>
        /// Type of error
        /// </summary>
        public enum EError
        {
            Undefined,
            Attach,
            Detach,
            SubmitChanges,
            Save,
            Delete,
            GetEntity,
            FindEntitie,
            FindEntities

        }
        #endregion

        #region Constructors
        /// <summary>
        /// Constructor accpting string
        /// </summary>
        /// <param name="message">Error message</param>
        public DAOException(EError error)
            : base(error.ToString())
        {
            
        }

        /// <summary>
        /// Constructor accpting string
        /// </summary>
        /// <param name="message">Error message</param>
        public DAOException(string message)
            : base(message)
        {
           
        }

        /// <summary>
        /// Constructor with a exception
		/// </summary>
		/// <param name="Except">Exception</param>
        public DAOException(Exception except)
            : base(except.Message, except)
		{
            
		}


        /// <summary>
        /// Constructor with a exception
        /// </summary>
        /// <param name="Except">Exception</param>
        public DAOException(EError error, Exception except)
            : base(error.ToString(), except)
        {
           
        }
        #endregion
    }
}

